package cn.lanca.gof16_20._18observer.jdkcase1;

/**
 * 观察者模式：
 * zhangsan张三是否有钱这个状态发生改变，hasChange
 * 然后通知和张三有借钱关系的李四和王五，更新方法update（）
 * update方法可以设置欠款数量，以及一些其他能够判断存在欠款关系的状态
 * void update(Observable o, Object arg);
 * 那个观察者Observable  需要更改的相关参数 arg
 *
 * @author hongliang.mei
 * @since 2020/12/28 00:15
 */
public class TestJdkCase1 {
    public static void main(String[] args) {
        Zhangsan zhangsan = new Zhangsan();
        // 添加欠款方
        Lisi lisi = new Lisi();
        Wangwu wangwu = new Wangwu();
        zhangsan.addObserver(lisi);
        zhangsan.addObserver(wangwu);

        System.out.println("第一年有不有钱: " + zhangsan.hasMoney());
        System.out.println("第二年有不有钱: " + zhangsan.hasMoney());
        System.out.println("第三年有不有钱: " + zhangsan.hasMoney());
        System.out.println(zhangsan.getName() + " 存钱多年后： " + zhangsan.hasMoney());
        zhangsan.setHasMoney();
        System.out.println(zhangsan.getName() + " 存钱多年后： " + zhangsan.hasMoney());
        if (zhangsan.hasMoney()) {
            System.out.println(zhangsan.getName() + " 存钱多年后： " + zhangsan.hasMoney());
            zhangsan.giveMoney();
        }
    }
}
